package com.miguo.view;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

/**
 * 自定义倒计时文本控件
 *
 * @author Administrator
 */
public class TimeTextView extends TextView implements Runnable {

    private long mday, mhour, mmin, msecond;// 天，小时，分钟，秒

    private int interval = 0;

    public TimeTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public TimeTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public TimeTextView(Context context) {
        super(context);
    }

    /**
     * 是否结束
     *
     * @return
     */
    public boolean isOver() {
        return interval < 10;
    }

    @Override
    public void run() {
        // 标示已经启动
        if (interval > 10) {
            interval--;

            mday = interval / (24 * 3600);// 天
            mhour = interval % (24 * 3600) / 3600;// 小时
            mmin = interval % 3600 / 60;// 分钟
            msecond = interval % 60;// 秒

//            StringBuffer strTime = new StringBuffer();
//            strTime.append("还剩");
//            if (mday > 0) {
//                strTime.append(mday + "天");
//            }
//            if (mhour > 0) {
//                strTime.append(mhour + "小时");
//            }
//            if (mmin > 0) {
//                strTime.append(mmin + "分");
//            }
//            if (msecond > 0) {
//                strTime.append(msecond + "秒");
//            }

            String strTime = "还剩" + mday + "天" + mhour + "小时" + mmin + "分钟"
                    + msecond + "秒";

            this.setText(strTime);

            postDelayed(this, 1000);
        } else {
            this.setText("活动已结束");
        }
    }

    /**
     * 获取时间差格式(yyyy-MM-dd HH:mm:ss)
     */
    public void setTime(String data) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(
                "yyyy-MM-dd HH:mm:ss", Locale.CHINA);
        try {
            Date currentTime = new Date();// 获取现在的时间
            Date beginTime = dateFormat.parse(data);
            interval = (int) ((beginTime.getTime() - currentTime.getTime()) / (1000));// 时间差
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    /**
     * 设置时间搓，获取时间差
     */
    public void setTime(long time) {
        Date currentTime = new Date();// 获取现在的时间
        long now = currentTime.getTime() / 1000;
        interval = (int) (time - now);// 时间差

    }
}